from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.uic import loadUiType
import sys
import pyregister
import pychangepassword,dbutil,pymainwindow
import iconfont_rc

#动态加载UI文件，实现UI与Logic操作分离
lg, _ = loadUiType('login.ui')

#登录界面
class LoginApp(QMainWindow,lg):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
        # 注册按钮与函数连接
        self.registerPushButton.clicked.connect(self.loginToregister)

        # 菜单栏按钮显示与否
        self.registerAction.setEnabled(True)
        self.changepasswordAction.setEnabled(True)
        self.loginAction.setEnabled(False)
        self.logoutAction.setEnabled(False)
        self.exitAction.setEnabled(True)
        # 菜单栏按钮与函数连接
        self.menu.triggered[QAction].connect(self.menuTriggered)

        self.loginPushButton.clicked.connect(lambda:self.user_login())


    # 实例变量问题，必须把它作为自己的一个实例变量才可以，不然是属于这样一个方法里面的临时变量，当这个方法结束以后这个变量就销毁了。

    #登录界面到注册界面
    def loginToregister(self):
        self.register_app = pyregister.RegisterApp()
        self.close()
        self.register_app.show()


    #登录界面菜单栏的按钮实现界面跳转
    def menuTriggered(self, q):
        if(q.text()=="修改密码"):
            self.change_password_app = pychangepassword.Change_passwordApp()
            self.close()
            self.change_password_app.show()

        if (q.text() == "注册"):
            self.register_app = pyregister.RegisterApp()
            self.close()
            self.register_app.show()


        if (q.text() == "退出"):
            app = QApplication.instance()
            app.quit()
        return

    #登录处理
    def user_login(self):
        conn = dbutil.get_conn()
        cur = conn.cursor()
        sql = "select * from users where id = %s and password = %s"
        old_account = self.usernamelineEdit.text()
        edit_password = self.passwordlineEdit.text()
        cur.execute(sql, (old_account, edit_password))
        data = cur.fetchone()

        if data:
            self.mainwindow_app = pymainwindow.MWApp()
            self.close()
            self.mainwindow_app.show()
        elif(old_account == ''and edit_password==''):
            QMessageBox.warning(self, "警告", "账号密码不能为空！", QMessageBox.Yes)
            self.usernamelineEdit.setText('')
            self.passwordlineEdit.setText('')
            self.statusBar().showMessage("请输入账号密码！")
        elif(old_account == ''):
            QMessageBox.warning(self, "警告", "账号不能为空！", QMessageBox.Yes)
            self.usernamelineEdit.setText('')
            self.statusBar().showMessage("请输入账号！")
        elif (edit_password== ''):
            QMessageBox.warning(self, "警告", "密码不能为空！", QMessageBox.Yes)
            self.passwordlineEdit.setText('')
            self.statusBar().showMessage("请输入密码！")
        else:
            QMessageBox.warning(self, "警告", "账号密码不匹配！", QMessageBox.Yes)
            self.usernamelineEdit.setText('')
            self.passwordlineEdit.setText('')
            self.statusBar().showMessage("请重新登录！")



        #dbutil.close_conn(conn, cur)




def main():
    app = QApplication([])     # 创建应用程序 创建一个QApplication，也就是你要开发的软件app
    window = LoginApp()         # 创建主窗口  创建一个MainAPP，用来装载你需要的各种组件、控件
    window.show()              # 显示窗口 执行QMainWindow的show()方法，显示这个QMainWindow
    app.exec_()                # 使用exit()或者点击关闭按钮退出QApplication


if __name__ == '__main__':
    main()